package com.wyvoid.forum.dao;

import java.util.List;
import java.util.Map;

import com.wyvoid.core.persistent.Pagination;
import com.wyvoid.core.persistent.hibernate.IHibernateDAO;
import com.wyvoid.core.persistent.hibernate.HibernatePage;
import com.wyvoid.forum.domain.User;

/**
 * 用户模块数据处理接口
 * 
 * @author wyvoid
 * @link www.wyvoid.com
 */
public interface IUserDAO extends IHibernateDAO<User> {

	/**
	 * 根据用户名查找用户信息
	 * 
	 * @param username 用户名称
	 * @return User 用户对象
	 */
	public User getUser(String username) ;
	
	/**
	 * 根据用户角色列表用户
	 * @param roles s
	 * @return
	 * @
	 */
	public List findUsersByRole(String roles) ;
	
	/**
	 * 根据用户名和密码查找用户信息
	 * 
	 * @param username 用户名
	 * @param password 用户密码
	 * @return User 用户对象
	 */
	public User findUser(String username, String password) ;

	
	/**
	 * 用户登录时更新登录时间和IP
	 * 
	 * @param userId 用户编号
	 * @param lastLoginTime 最后登陆时间
	 * @param lastLoginIp 最后登陆的IP
	 */
	public void updateLoginInfo(int userId,String lastLoginTime,String lastLoginIp) ;

	/**
	 * 修改用户密码
	 * 
	 * @param userId 用户编号
	 * @param password 新密码
	 * @ 数据处理异常
	 */	
	public void updateUserPassword(int userId,String password) ;
	
	/**
	 * 用户总数
	 * @return userCount
	 */
	public long countUser() ;
	
	/**
	 * 最新注册的用户
	 * @return user
	 */
	public User getNewestUser() ;

	/**
	 * 更新用户角色
	 * @param username 用户名
	 * @param roles 用户角色
	 * @
	 */
	public void updateRole(String username,String roles) ;

	
	/**
	 * 锁定用户
	 * @param userId 用户编号 
	 * @param isLock 是否锁定
	 */
	public void lockUser(int userId,int isLock)  ;

	/**
	 * 更新用户角色
	 * @param userId 用户编号
	 * @param roles 角色
	 * @
	 */
	public void updateUserRoles(int userId,String roles) ;
    
}
